package controllers; import java.awt.event.*; import models.*; import views.*; import javax.swing.JOptionPane; import javax.swing.table.*; import controllers.CustomerController.GenerateReportButtonActionListener; public class AdminController extends AbstractController { private AdminView adminView; public AdminController(AdminView frame, boolean hasBackButton) { super(frame, hasBackButton); adminView = frame; adminView.setRemoveButtonActionListener(new RemoveButtonActionListener()); adminView.setAddButtonActionListener(new AddButtonActionListener()); adminView.setAccountsButtonActionListener(new AccountsButtonActionListener()); adminView.setGenerateReportButtonActionListener(new GenerateReportButtonActionListener()); } public class RemoveButtonActionListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { int index = adminView.getTable().getSelectedRow(); if (index != -1) { String name = (String) adminView.getTable().getModel().getValueAt(index, 0); for (Person p : Bank.getInstance().getInfo().keySet()) { if (p.getName().equals(name)) { try { Bank.getInstance().removePerson(p); } catch (IllegalOperationException e1) { e1.printStackTrace(); } break; } } ((DefaultTableModel) adminView.getTable().getModel()).removeRow(index); } } } public class AddButtonActionListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { String name = adminView.getUserName().getText(); int age = Integer.parseInt(adminView.getAge().getText()); Person p = new Person(name, age); try { Bank.getInstance().addPerson(p); } catch (IllegalOperationException e1) { e1.printStackTrace(); JOptionPane.showMessageDialog(null, "Illegal Operation Exception"); return; } ((DefaultTableModel) adminView.getTable().getModel()).addRow(new Object[] { name, age }); AdminAccountView adminAccountView = new AdminAccountView("Accounts", p); new AdminAccountController(adminAccountView, true); adminAccountView.getAdd().doClick(); } } public class AccountsButtonActionListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { int index = adminView.getTable().getSelectedRow(); if (index != -1) { String name = (String) adminView.getTable().getModel().getValueAt(index, 0); for (Person p : Bank.getInstance().getInfo().keySet()) { if (p.getName().equals(name)) { new AdminAccountController(new AdminAccountView("Accounts", p), true); break; } } } } } public class GenerateReportButtonActionListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { Bank.getInstance().generateReportAdmin(); } } }